博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WKWebView捕获HTML弹出的Alert和Confirm
阅读量:6606 次
发布时间:2019-06-24

本文共 3051 字,大约阅读时间需要 10 分钟。

之前用WebView装载一个网页时,弹出Alert时会显示网址,由于不想把网址暴露给用户这样显示就不是很友好了。UIWebView文档内没有找到可以捕获这类信息的API。GOOGLE了下发现了WKWebView组件,WKWebView是IOS8新推出的组件,目的是给出一个新的高性能的 Web View 解决方案,摆脱过去 UIWebView 的老旧笨重特别是内存占用量巨大的问题。以下为示例代码:

////  ViewController.swift//  KenWKWebView////  Created by KenNgai on 10/10/15.//  Copyright © 2015 IT. All rights reserved.//import UIKitimport WebKit //导入WebKit  WKWebView应该是用Webkit内核class ViewController: UIViewController,WKNavigationDelegate,WKUIDelegate {    var wkBrowser:WKWebView!        override func viewDidLoad() {        super.viewDidLoad()        self.wkBrowser = WKWebView(frame: self.view.frame)        //self.wkBrowser.loadRequest(NSURLRequest(URL: NSURL(string: "http://www.baidu.com")!))        let html = "DialogAlert
Logout" self.wkBrowser.loadHTMLString(html, baseURL: nil) self.wkBrowser.navigationDelegate = self self.wkBrowser.UIDelegate = self self.view.addSubview(wkBrowser) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. }}//捕捉异常信息private typealias wkNavigationDelegate = ViewControllerextension wkNavigationDelegate { func webView(webView: WKWebView, didFailNavigation navigation: WKNavigation!, withError error: NSError) { NSLog(error.debugDescription) } func webView(webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: NSError) { NSLog(error.debugDescription) }}private typealias wkUIDelegate = ViewControllerextension wkUIDelegate { //HTML页面Alert出内容 func webView(webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: () -> Void) { let ac = UIAlertController(title: webView.title, message: message, preferredStyle: UIAlertControllerStyle.Alert) ac.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Cancel, handler: { (a) -> Void in completionHandler() })) self.presentViewController(ac, animated: true, completion: nil) } //HTML页面弹出Confirm时调用此方法 func webView(webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: (Bool) -> Void) { let ac = UIAlertController(title: webView.title, message: message, preferredStyle: UIAlertControllerStyle.Alert) ac.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: { (ac) -> Void in completionHandler(true) //按确定的时候传true })) ac.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: { (ac) -> Void in completionHandler(false) //取消传false })) self.presentViewController(ac, animated: true, completion: nil) }}

 

如果你访问的页面的协议是https那么要在info.list同添加以下Key:

<key>NSAppTransportSecurity</key>

    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>

具体可参考:https://lvwenhan.com/ios/460.html

 

转载地址:http://htbso.baihongyu.com/

你可能感兴趣的文章
netty的编解码器介绍
查看>>
linux中 vi / vim显示行号或取消行号命令
查看>>
svn文件修改后,默认只有当前文件更改而父文件没有标注
查看>>
NoSQL分布式数据库的独家见解- Adam Fowler
查看>>
码云生产 添加公钥
查看>>
面试技巧:带走面试官的节奏
查看>>
css3实现星星闪烁效果
查看>>
让我们来说说:Java线程池!
查看>>
Spring Web MVC工作原理
查看>>
PHP6种加密方法介绍
查看>>
oracle取前几行|中间几行|后几行
查看>>
java算法-递归算法思想
查看>>
领域驱动的设计
查看>>
16.1 Tomcat介绍
查看>>
Tumblr 爬虫
查看>>
B站,N站,汤站,爬虫下载资源总结与技巧(二)
查看>>
QuickBI助你成为分析师——数据源FAQ小结
查看>>
速记 UWP Unit Test 异常:ailed to initialize client proxy: could not connect to test process
查看>>
十周三次课
查看>>
解读POI操作之表格导出(生成多个sheet)
查看>>